home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / MRAC / Lengths / Modify / l-complement2 < prev    next >
Lisp/Scheme  |  1998-08-11  |  2KB  |  46 lines

  1. l-complement2 type length pattern
  2.  
  3. This function is used to complement existing values in a note-length list with further values to enable the whole list to 'add-up' to a user-defined zone-length. 
  4.  
  5. type :note :rest seed
  6.  
  7. (setq len1 (qlength '((8-11) (20-11111) (8-11) (12-111))))
  8.  
  9. (setq pat (l-tie len1))
  10. => ((1/8) (7/40) (1/20 1/20 1/20) (7/40) (5/24) (1/12 1/12))
  11.  
  12. (l-complement2 :note '1/4 pat)
  13. => ((1/8 1/8) (1/8 7/40 1/5) (1/20 1/20 1/20 1/20 1/20)
  14.     (1/5 7/40 1/8) (1/8 5/24 1/6) (1/12 1/12 1/12))
  15.  
  16. (l-complement2 :rest '1/4 pat)
  17. => ((1/8 -1/8) (-1/8 7/40 -1/5) (-1/20 1/20 1/20 1/20 -1/20)
  18.     (-1/5 7/40 -1/8) (-1/8 5/24 -1/6) (-1/12 1/12 1/12))
  19.  
  20. (l-complement2 nil '1/4 pat)
  21. => ((1/8 -1/8) (-1/8 7/40 1/5) (-1/20 1/20 1/20 1/20 1/20)
  22.     (1/5 7/40 -1/8) (1/8 5/24 1/6) (1/12 1/12 1/12))
  23. or...
  24.  
  25. (l-complement2 .23 '1/4 pat)
  26. => ((1/8 1/8) (1/8 7/40 1/5) (-1/20 1/20 1/20 1/20 1/20)
  27.     (1/5 7/40 -1/8) (1/8 5/24 -1/6) (-1/12 1/12 1/12))
  28.  
  29. (setq len2 (permute-unique (qlength '(20-10100))))
  30. (setq prime (vector-to-list (gen-primes 18)))
  31.  
  32. (l-complement2 :note '1/4
  33.               (l-modify .45 nil :note :times
  34.                         (symbol-shuffle prime .32) len2))
  35.  
  36. => ((13/20 11/20 -1/20 -1/20 -1/20 3/20)
  37.     (1/10 1/10 -1/20 17/20 -1/20 -1/20 1/20)
  38.     (1/5 1/20 -1/20 -1/20 7/20 -1/20)
  39.     (1/4 1/4 -1/20 -1/20 -1/20 3/20 1/5)
  40.     (1/20 -1/20 13/20 11/20 -1/20 -1/20 1/10)
  41.     (3/20 -1/20 1/10 -1/20 17/20 -1/20)
  42.     (1/4 -1/20 1/20 -1/20 -1/20 7/20 1/5)
  43.     (1/20 -1/20 -1/20 -1/20 1/4 3/20 3/20)
  44.     (1/10 -1/20 -1/20 13/20 11/20 -1/20 1/20)
  45.     (1/5 -1/20 -1/20 1/10 -1/20 17/20 1/5))
  46.